function randString(len, lang) {
    var latin = 'abcdefghijklmnopqrstuvwxyz';
    var cyrillic = 'абвгдежзийклмнопрстуфхцчшщъьюя';
    var charset = latin;
    if (lang === 'ru') {
        charset = cyrillic;
    }
    var text = "";
    for (var i = 0; i < len; i++)
    {
        text += charset.charAt(Math.floor(Math.random() * charset.length));
    }
    return text;
}

function randNum(len) {
    var min = "1";
    var max = "8";
    for (var i = 1; i < len; i++) {
        min += "0";
        max += "9";
    }
    return parseInt(min) + Math.floor(Math.random() * max);
}

function getDate() {
    var minYear = 1960;
    var maxYear = 1980;
    var day = 1 + Math.floor(Math.random() * 28);
    if (day < 10) {
        day = "0" + day;
    }
    var mon = 1 + Math.floor(Math.random() * 12);
    if (mon < 10) {
        mon = "0" + mon;
    }
    var year = minYear + Math.floor(Math.random() * (maxYear - minYear));
    var res = day + "." + mon + "." + year;
    return res;
}

function getName() {
    var names = ["Абрам", "Аваз", "Авраам", "Агап", "Агапит", "Агафон", "Адам", "Адриан", "Азамат", "Азат", "Айдар", "Айрат", "Аким", "Алан", "Александр", "Алексей", "Али", "Алихан", "Алмаз", "Альберт", "Анатолий", "Ангел", "Андрей", "Антон", "Анфим", "Арам", "Аркадий", "Арман", "Армен", "Арсений", "Арслан", "Артем", "Артемий", "Артур", "Асхан", "Ахмет", "Ашот", "Бахрам", "Богдан", "Борис", "Борислав", "Бронислав", "Булат", "Вадим", "Валентин", "Валерий", "Вальдемар", "Вардан", "Василий", "Виктор", "Вильгельм", "Вит", "Виталий", "Владимир", "Владислав", "Владлен", "Всеволод", "Вячеслав", "Гамлет", "Гарри", "Геннадий", "Генри", "Генрих", "Георгий", "Герасим", "Герман", "Германн", "Глеб", "Гордей", "Григорий", "Густав", "Давид", "Давлат", "Дамир", "Дана", "Даниил", "Данислав", "Денис", "Джамал", "Джеймс", "Джереми", "Джозеф", "Дик", "Динар", "Дино", "Дмитрий", "Добрыня", "Евгений", "Евдоким", "Евстахий", "Егор", "Елисей", "Емельян", "Еремей", "Ефим", "Ефрем", "Ждан", "Жерар", "Закир", "Захар", "Зиновий", "Ибрагим", "Иван", "Игнат", "Игнатий", "Игорь", "Иероним", "Ильшат", "Илья", "Иннокентий", "Исаак", "Исаакий", "Исидор", "Искандер", "Ислам", "Исмаил", "Казбек", "Камиль", "Карен", "Карим", "Карл", "Ким", "Кирилл", "Клаус", "Клим", "Конрад", "Константин", "Корнелий", "Кузьма", "Лев", "Леон", "Леонард", "Леонид", "Леопольд", "Лука", "Лукиллиан", "Лукьян", "Любомир", "Людвиг", "Людовик", "Люций", "Майкл", "Макар", "Макарий", "Максим", "Максимилиан", "Максуд", "Мансур", "Мар", "Марат", "Марк", "Марсель", "Мартин", "Матвей", "Махмуд", "Мика", "Микула", "Мирон", "Мирослав", "Михаил", "Мстислав", "Мурат", "Муслим", "Мухаммед", "Назар", "Никита", "Никодим", "Никола", "Николай", "Нильс", "Олег", "Орландо", "Осип", "Оскар", "Остап", "Павел", "Педро", "Петр", "Платон", "Прохор", "Равиль", "Радий", "Радик", "Радомир", "Радослав", "Разиль", "Райан", "Раймонд", "Рамазан", "Рамиз", "Рамиль", "Рамон", "Ранель", "Расим", "Расул", "Ратмир", "Рафаэль", "Рафик", "Рашид", "Ринат", "Ричард", "Роберт", "Родион", "Ролан", "Роман", "Ростислав", "Рубен", "Рудольф", "Руслан", "Рустам", "Рэй", "Савва", "Савелий", "Самвел", "Самуил", "Святослав", "Севастьян", "Семен", "Сергей", "Сидор", "Спартак", "Станислав", "Степан", "Султан", "Тагир", "Тамаз", "Тамерлан", "Тарас", "Тигран", "Тимофей", "Тимур", "Тихон", "Томас", "Трофим", "Умар", "Фазиль", "Фарид", "Федор", "Федот", "Феликс", "Филипп", "Флор", "Фома", "Фред", "Фридрих", "Хаким", "Харитон", "Цецилий", "Чарльз", "Чеслав", "Чингиз", "Шамиль", "Шарль", "Эдгар", "Эдуард", "Эльдар", "Эмиль", "Эмин", "Эрик", "Эрмин", "Юлиан", "Юлий", "Юрий", "Яков", "Ян", "Ярослав"];
    var index = 0 + Math.floor(Math.random() * (names.length - 1));
    return names[index];
}

function getSurname() {
    var names = ["Иванов", "Васильев", "Петров", "Смирнов", "Михайлов", "Фёдоров", "Соколов", "Яковлев", "Попов", "Андреев", "Алексеев", "Александров", "Лебедев", "Григорьев", "Степанов", "Семёнов", "Павлов", "Богданов", "Николаев", "Дмитриев", "Егоров", "Волков", "Кузнецов", "Никитин", "Соловьёв"];
    var index = 0 + Math.floor(Math.random() * (names.length - 1));
    return names[index];
}

function getRnnBad() {
    var base = "" + randNum(11);
    var sum1 = (1 * base.charAt(0) + 2 * base.charAt(1) + 3 * base.charAt(2) + 4 * base.charAt(3) + 5 * base.charAt(4) + 6 * base.charAt(5) + 7 * base.charAt(6) + 8 * base.charAt(7) + 9 * base.charAt(8) + 10 * base.charAt(9) + 1 * base.charAt(10));
    divided1 = (sum1 - (parseInt(sum1) % 11)) / 11;
    check1 = sum1 - divided1 * 11;
    if (check1 <= 9)
        return base.concat(check1);
    var sum2 = (2 * base.charAt(0) + 3 * base.charAt(1) + 4 * base.charAt(2) + 5 * base.charAt(3) + 6 * base.charAt(4) + 7 * base.charAt(5) + 8 * base.charAt(6) + 9 * base.charAt(7) + 10 * base.charAt(8) + 1 * base.charAt(9) + 2 * base.charAt(10));
    divided2 = (sum2 - (parseInt(sum2) % 11)) / 11;
    check2 = sum2 - divided2 * 11;
    return base.concat(check2);
}

function getRnn(){
    var rnn;
    while(true){
        rnn = getRnnBad();
        if (rnn.length == 12){
            return rnn;
        }
    }
}

function getIin() {

    var date = getDate(); //dd.mm.yyyy

    var base = "" + date.charAt(8) + date.charAt(9) + date.charAt(3) + date.charAt(4) + date.charAt(0) + date.charAt(1);
    base += '3'; //for sex='m'

    base += randNum(4);

    var sum1 = (1 * base.charAt(0) + 2 * base.charAt(1) + 3 * base.charAt(2) + 4 * base.charAt(3) + 5 * base.charAt(4) + 6 * base.charAt(5) + 7 * base.charAt(6) + 8 * base.charAt(7) + 9 * base.charAt(8) + 10 * base.charAt(9) + 11 * base.charAt(10));
    var divided1 = sum1 % 11;

    if (divided1 < 10) {
        return base.concat(divided1);
    }

    var sum2 = (3 * base.charAt(0) + 4 * base.charAt(1) + 5 * base.charAt(2) + 6 * base.charAt(3) + 7 * base.charAt(4) + 8 * base.charAt(5) + 9 * base.charAt(6) + 10 * base.charAt(7) + 11 * base.charAt(8) + 1 * base.charAt(9) + 2 * base.charAt(10));
    var divided2 = sum2 % 11;

    var result = base.concat(divided2);

    return result;
}

function getPhone() {
    return randNum(10);
}

function translit(russian) {
    russian = russian.toLowerCase();
    var cyrillic = "абвгдежзийклмнопрстуфхцчшщъьюя";
    var latin = ['a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'shch', '', '', 'yu', 'ya'];
    var result = "";

    for (var i = 0; i < russian.length; i++) {
        var analog = latin[cyrillic.indexOf(russian.charAt(i))];
        if (analog === undefined) {
            analog = " ";
        }
        result += analog;
    }
    return result;
}

function passNum() {
    var tt = "";
    tt += randString(2);
	tt += randNum(7);
  
    return tt;
}